import os


def get_project_path(project_name=None):
    # 当前文件所在目录
    current_path = os.path.abspath(os.path.dirname(__file__))

    # 尝试基于项目结构识别（添加你的项目特定逻辑）
    project_markers = [
        'roncoo',  # 你的项目名称
        'common',  # 你的公共模块目录
        'main.py',  # 你的主入口文件
        # 添加其他你项目特有的目录或文件
    ]

    for marker in project_markers:
        marker_path = os.path.join(current_path, marker)
        if os.path.exists(marker_path):
            return current_path

    # 向上搜索直到找到项目根目录
    search_path = current_path
    while True:
        if 'roncoo' in os.path.basename(search_path):  # 检查目录名
            return search_path
        parent_path = os.path.dirname(search_path)
        if parent_path == search_path:  # 到达文件系统根目录
            break
        search_path = parent_path

    raise ValueError("无法确定项目根目录。请确认：\n"
                     "1. 项目包含 'roncoo' 目录名\n"
                     "2. 或在根目录创建 .projectroot 文件\n"
                     "3. 或调用时指定 project_name 参数")


def sep(path, add_before=False, add_after=False):
    # 拼接传入的数组
    all_path = os.sep.join(path)
    # 如果before为TRUE，那就在路径前面加“/”
    if add_before:
        all_path = os.sep + all_path
    # 如果after为TRUE，那就在路径后面加“/”
    if add_after:
        all_path = all_path + os.sep
    return all_path

def join_path(path_parts, prefix_sep=False, suffix_sep=False):
    """
    拼接路径并可选地添加前后分隔符

    Args:
        path_parts (list): 路径部分列表
        prefix_sep (bool): 是否在路径前添加分隔符
        suffix_sep (bool): 是否在路径后添加分隔符

    Returns:
        str: 拼接后的规范化路径
    """
    joined_path = os.path.join(*path_parts)

    # 规范化路径（处理多余的斜杠等）
    normalized_path = os.path.normpath(joined_path)

    # 确保路径使用正确的系统分隔符
    if os.sep != '/':
        normalized_path = normalized_path.replace('/', os.sep)

    # 处理前后分隔符
    if prefix_sep and not normalized_path.startswith(os.sep):
        normalized_path = os.sep + normalized_path
    if suffix_sep and not normalized_path.endswith(os.sep):
        normalized_path += os.sep

    return normalized_path


if __name__ == '__main__':
    print(get_project_path())
    print(join_path(["config", "a.json"], suffix_sep=True))
    print(join_path(["config", "a.json"], prefix_sep=True))
